package com.ygqh.baby.controller.admin;

import com.ygqh.baby.ao.Message;
import com.ygqh.baby.ao.PromotionStatus;
import com.ygqh.baby.ao.QueryInfo;
import com.ygqh.baby.ao.ResultSet;
import com.ygqh.baby.model.YgProduct4ListModel;
import com.ygqh.baby.po.YgProductSecond;
import com.ygqh.baby.service.YgProductSecondService;
import com.ygqh.baby.utils.JsonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 秒杀活动
 * （限制时间精确到时分秒）
 *
 * @author sunshuo
 * @date 2019/5/27 11:45
 * @version 2.0
 */
@Controller
@RequestMapping("/admin/productsecond")
public class ProductSecondController extends BaseController<Object, java.lang.Long> {

	@Autowired
	private YgProductSecondService ygProductSecondService;

	/**
	 * 秒杀活动列表
	 *
	 * @param queryInfo	分页参数
	 * @param q 		活动名称模糊搜索
	 * @param pstatus	活动状态
	 * @param startTime	有效期开始时间
	 * @param endTime	有效期结束时间
	 * @return
	 */
	@RequestMapping("searchProductSecond")
	@ResponseBody
	public Map<String, Object> searchProductSecond(QueryInfo queryInfo, String q, PromotionStatus pstatus,
												   Date startTime, Date endTime) {
		ResultSet<YgProductSecond> resultSet = ygProductSecondService.search(queryInfo, getSession().getSupplierId(),
				pstatus, startTime, endTime, q);
		return resultSet.toDatatables(null);
	}

	/**
	 * 新增秒杀活动
	 *
	 * @param second 活动信息
	 * @param startTime 活动开始时间
	 * @param endTime 活动结束时间
	 * @param shareRate 活动期间商品返利（暂未使用）
	 * @return
	 */
	@RequestMapping("addProductSecond")
	@ResponseBody
	public Message addProductSecond(String second, Date startTime, Date endTime, BigDecimal shareRate) {
		YgProductSecond p = JsonUtils.toObject(second, YgProductSecond.class);
		p.setStartTime(startTime);
		p.setEndTime(endTime);
		p.setCreateBy(getSession().getTrueName());
		p.setCreateTime(new Date());
		p.setShareRate(shareRate);
		return ygProductSecondService.save(p);

	}

	/**
	 * 修改秒杀活动信息
	 * （可提前结束秒杀活动）
	 *
	 * @param second 活动信息
	 * @param startTime 活动开始时间
	 * @param endTime 活动结束时间
	 * @param shareRate 活动期间商品返利（暂未使用）
	 * @return
	 */
	@RequestMapping("updateProductSecond")
	@ResponseBody
	public Message updateProductSecond(String second, Date startTime, Date endTime, BigDecimal shareRate) {
		YgProductSecond p = JsonUtils.toObject(second, YgProductSecond.class);
		p.setUpdateBy(getSession().getTrueName());
		p.setStartTime(startTime);
		p.setEndTime(endTime);
		p.setUpdateTime(new Date());
		p.setShareRate(shareRate);
		return ygProductSecondService.update(p);
	}

	/**
	 * 根据活动id获取指定秒杀活动信息
	 *
	 * @param id 活动id
	 * @return
	 */
	@RequestMapping("getProductSecond")
	@ResponseBody
	public YgProductSecond getProductSecond(Long id) {
		return ygProductSecondService.findById(id);
	}

	/**
	 * 查询活动商品信息
	 *
	 * @param secondId 活动id
	 * @param productName 商品名称模糊查询
	 * @param groupId 商品分组id
	 * @return
	 */
	@RequestMapping("getProductListById")
	@ResponseBody
	public Map<String, Object> getProductSecond(Long secondId, String productName, Long groupId) {
		List<YgProduct4ListModel> list = ygProductSecondService.findProductBySecondId(null, secondId, productName, groupId);
		ResultSet<YgProduct4ListModel> result = new ResultSet<>(1, list);
		return result.toDatatables(null);
	}

	/**
	 * 删除活动
	 *
	 * @param id 活动id
	 * @return
	 */
	@RequestMapping("delProductSecond")
	@ResponseBody
	public Message delProductSecond(Long id) {
		return ygProductSecondService.delProductSecond(id);
	}
}
